#include "global.h"
#include "system.h"
#include "lwip.h"
#include "date.h"
#include "tcp_server.h"
#include "tcp_client.h"
#include "fatfs.h"
RTC_TimeTypeDef rtc_time;
RTC_DateTypeDef rtc_date;
uint32_t systern_run_time = 0;
uint16_t rtc_ms = 0;//系统时间ms rtc只能提供精确到s



/**
 * @defgroup start task相关参数
 */
#define START_TASK_PRIO 6  //任务优先级
#define START_TASK_SIZE 512 //任务堆栈大小
TaskHandle_t START_TASK_Handler;//任务句柄
void start_task(void *pvparameters);





void start_task_init(void)
{
    taskENTER_CRITICAL();
    xTaskCreate((TaskFunction_t )start_task,    //任务函数
                (const char *   )"start",   //任务名称
                (uint16_t       )START_TASK_SIZE, //任务堆栈大小
                (void *         )NULL,                //任务参数
                (UBaseType_t    )START_TASK_PRIO, //任务优先级
                (TaskHandle_t * )&START_TASK_Handler); //任务句句柄
    MX_LWIP_Init();
    taskEXIT_CRITICAL();         
}

void fault_test_by_div0(void) {
    volatile int * SCB_CCR = (volatile int *) 0xE000ED14; // SCB->CCR
    int x, y, z;

    *SCB_CCR |= (1 << 4); /* bit4: DIV_0_TRP. */

    x = 10;
    y = 0;
    z = x / y;
    log_i("z:%d\n", z);
}
static void start_task(void * pvparameters)
{
    /*获取系统初始时间*/
    file_system_init();
    file_system_test();

    // fault_test_by_div0();//测试DIV0异常
    tcp_server_init();
    tcp_client_init();

    log_i("系统开机成功 \r\n");
    for(;;)
    {
        vTaskDelay(2000);
    }
}

